package xyz.xtt.exchange.client;

import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;

import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import xyz.xtt.common.response.ApiResult;
import xyz.xtt.exchange.request.CopyrightRequest;
import xyz.xtt.exchange.response.AssetAuditResponse;

@Slf4j
@Component
public class ExchangeClientFallbackFactory implements FallbackFactory<ExchangeClient> {
	@Override
	public ExchangeClient create(Throwable throwable) {
		return new ExchangeClient() {

			@Override
			public ApiResult<AssetAuditResponse> assetAuditInfo(Long assetAuditId) {
				log.error("assetAuditInfo FallbackFactory assetAuditId: {}", assetAuditId);
				return ApiResult.failure();
			}
//			/**
//			 * 获取售卖中的权益包
//			 *
//			 * @param request 请参数
//			 * @return 售卖中的权益包
//			 */
//			@Override
//			public ApiResult<TblBenefitPackageDto> getOnSaleBenefitPackage(GetOnSaleBenefitPackageRequest request) {
//				log.error("getOnSaleBenefitPackage FallbackFactory param: {}", request);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 获取未支付的权益购买记录
//			 *
//			 * @param uid
//			 * @param request 请求参数
//			 * @return 未支付的权益购买记录
//			 */
//			@Override
//			public ApiResult<TblBenefitPurchaseRecordDto> getUnPayBenefitPurchaseRecord(Long uid, GetUnPayBenefitPurchaseRecordRequest request) {
//				log.error("getUnPayBenefitPurchaseRecord FallbackFactory param: {}", request);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 保存权益包未支付记录
//			 *
//			 * @param uid
//			 * @param saveDto
//			 * @return
//			 */
//			@Override
//			public ApiResult<Long> saveUnPayBenefitPurchase(Long uid, SaveBenefitPurchaseUnPayDto saveDto) {
//				log.error("saveUnPayBenefitPurchase FallbackFactory param: {}", saveDto);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 查询权益包支付记录
//			 *
//			 * @param uid
//			 * @param request
//			 * @return
//			 */
//			@Override
//			public ApiResult<TblBenefitPurchaseRecordDto> getBenefitPurchaseRecord(Long uid, GetBenefitPurchaseRecordRequest request) {
//				log.error("getBenefitPurchaseRecord FallbackFactory param: {}", request);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 支付成功处理
//			 *
//			 * @param uid
//			 * @param request
//			 * @return
//			 */
//			@Override
//			public ApiResult<Boolean> handlePaySuccess(Long uid, HandlePaySuccessRequest request) {
//				log.error("handlePaySuccess FallbackFactory param: {}", request);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 支付取消处理
//			 *
//			 * @param uid
//			 * @param request
//			 * @return
//			 */
//			@Override
//			public ApiResult<Boolean> handlePayCancel(Long uid, HandlePayCancelRequest request) {
//				log.error("handlePayCancel FallbackFactory param: {}", request);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 查询资产铸造审核记录
//			 *
//			 * @param uid
//			 * @param auditId
//			 * @return
//			 */
//			@Override
//			public ApiResult<AssetAuditDto> getAuditRecord(Long uid, Long auditId) {
//				log.error("getAuditRecord FallbackFactory param: {}", auditId);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 获取铸造分段计价规则
//			 *
//			 * @return
//			 */
//			@Override
//			public ApiResult<String> getPersonalMintPriceConfig() {
//				log.error("getPersonalMintPriceConfig FallbackFactory");
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 计算个人铸造价格
//			 *
//			 * @param mintNum
//			 * @return
//			 */
//			@Override
//			public ApiResult<String> calculatePersonalMintPrice(Integer mintNum) {
//				log.error("calculatePersonalMintPrice FallbackFactory param: {}", mintNum);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 获取3日内VIP将要过期的用户权益记录集合
//			 *
//			 * @param pageNo
//			 * @param pageSize
//			 * @param benefitCode
//			 * @return
//			 */
//			@Override
//			public ApiResult<List<TblUserBenefitDto>> getExpiringUserBenefits(int pageNo, int pageSize, String benefitCode) {
//				log.error("getExpiringUserBenefits FallbackFactory param: {}, {}, {}", pageNo, pageSize, benefitCode);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 查询用户最新一条权益记录
//			 *
//			 * @param uid
//			 * @param benefitCode
//			 * @return
//			 */
//			@Override
//			public ApiResult<TblUserBenefitDto> getLatestUserBenefit(String uid, String benefitCode) {
//				log.error("getLatestUserBenefit FallbackFactory uid: {}, benefitCode:{}", uid, benefitCode);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 获取资产最新配置及其日志记录
//			 *
//			 * @param assetId
//			 * @return
//			 */
//			@Override
//			public ApiResult<TblAssetExpandDto> getAssetExpand(Long assetId) {
//				log.error("getAssetExpand FallbackFactory param: {}", assetId);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 赠送免费权益包
//			 *
//			 * @param request
//			 * @return
//			 */
//			@Override
//			public ApiResult<Boolean> sendFreeBenefitPackage(SendFreeBenefitPackageRequest request) {
//				log.error("sendFreeBenefitPackage FallbackFactory param: {}", request);
//				return ApiResult.failure();
//			}
//
//			/**
//			 * 根据用户ID根goodsId获取NFT详情
//			 *
//			 * @param uid
//			 * @param goodsId
//			 * @return
//			 */
//			@Override
//			public ApiResult<TblAssetExpandDto> nftDetails(Long uid, String goodsId) {
//				log.error("getAssetExpand FallbackFactory param: {}", uid, goodsId);
//				return ApiResult.failure();
//			}
//
//			@Override
//			public ApiResult<String> createOperator(String operateUserId, String goodsId) {
//				return null;
//			}
//
//			@Override
//			public ApiResult<String> deleteOperator(String id) {
//				return null;
//			}
//
//			@Override
//			public ApiResult<List<TblMissAsiaPkOperatorResponse>> listOperator() {
//				return null;
//			}

			@Override
			public ApiResult<Boolean> assetAuditPayMint(Long assetAuditId, Long assetId) {
				log.error("assetAuditPayMint FallbackFactory assetAuditId:{},assetId:{}", assetAuditId, assetId);
				return ApiResult.failure();
			}

			@Override
			public ApiResult<Boolean> judgeMerchantPer(String uid) {
				log.error("judgeMerchantPer FallbackFactory uid:{}", uid);
				return ApiResult.failure();
			}

			@Override
			public ApiResult<Boolean> saveCopyright(CopyrightRequest copyrightRequest) {
				log.error("saveCopyright FallbackFactory copyrightRequest:{}", JSONUtil.toJsonStr(copyrightRequest));
				return ApiResult.failure();
			}
		};
	}
}
